package com.doit.day01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;

/**
 * 主体逻辑，取mysql数据库中查找数据
 * 在查找之前，取缓存里面搂一眼，有还是没有
 * 有，直接返回结果
 * 没有，取mysql数据库里面查，将查询的结果返回客户并且往缓存里面存一份
 */
public class _01_模拟缓存系统 {
    public static void main(String[] args) throws Exception {
        //这就是我们的缓存
        HashMap<Integer, String> map = new HashMap<>();

        //获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        PreparedStatement pps = conn.prepareStatement("select age,name,gender from user_info where id = ?");

        for (int i = 0; i < 1000; i++) {
            //现在有了缓存系统，肯定就不是上来就查询mysql数据库
            //先取缓存里面查看一下
            String s = map.get(i);

            if (s != null){
                //代表缓存中有
                System.out.println(s);
                return;
            }else {
                //缓存中没有，那就去查数据库
                pps.setInt(1,i);

                ResultSet resultSet = pps.executeQuery();

                while (resultSet.next()){
                    int age = resultSet.getInt("age");
                    String name = resultSet.getString("name");
                    String gender = resultSet.getString(3);
                    //返回
                    System.out.println("age:"+age+",name:"+name+",gender:"+gender);
                    //查完了之后还要将数据往缓存里面写一份
                    map.put(i,age+","+name+","+gender);
                }
                return;
            }
        }



    }
}
